home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / cpu / mips / mips.h < prev    next >
C/C++ Source or Header  |  2000-05-14  |  5KB  |  197 lines

  1. #ifndef _MIPS_H
  2. #define _MIPS_H
  3.  
  4. #include "osd_cpu.h"
  5.  
  6. enum
  7. {
  8.     MIPS_PC = 1, MIPS_OC,
  9.     MIPS_HI, MIPS_LO,
  10.     MIPS_R0, MIPS_R1,
  11.     MIPS_R2, MIPS_R3,
  12.     MIPS_R4, MIPS_R5,
  13.     MIPS_R6, MIPS_R7,
  14.     MIPS_R8, MIPS_R9,
  15.     MIPS_R10, MIPS_R11,
  16.     MIPS_R12, MIPS_R13,
  17.     MIPS_R14, MIPS_R15,
  18.     MIPS_R16, MIPS_R17,
  19.     MIPS_R18, MIPS_R19,
  20.     MIPS_R20, MIPS_R21,
  21.     MIPS_R22, MIPS_R23,
  22.     MIPS_R24, MIPS_R25,
  23.     MIPS_R26, MIPS_R27,
  24.     MIPS_R28, MIPS_R29,
  25.     MIPS_R30, MIPS_R31,
  26.     MIPS_CP0R0, MIPS_CP0R1,
  27.     MIPS_CP0R2, MIPS_CP0R3,
  28.     MIPS_CP0R4, MIPS_CP0R5,
  29.     MIPS_CP0R6, MIPS_CP0R7,
  30.     MIPS_CP0R8, MIPS_CP0R9,
  31.     MIPS_CP0R10, MIPS_CP0R11,
  32.     MIPS_CP0R12, MIPS_CP0R13,
  33.     MIPS_CP0R14, MIPS_CP0R15,
  34.     MIPS_CP0R16, MIPS_CP0R17,
  35.     MIPS_CP0R18, MIPS_CP0R19,
  36.     MIPS_CP0R20, MIPS_CP0R21,
  37.     MIPS_CP0R22, MIPS_CP0R23,
  38.     MIPS_CP0R24, MIPS_CP0R25,
  39.     MIPS_CP0R26, MIPS_CP0R27,
  40.     MIPS_CP0R28, MIPS_CP0R29,
  41.     MIPS_CP0R30, MIPS_CP0R31
  42. };
  43.  
  44. extern int mips_ICount;
  45.  
  46. #define MIPS_INT_NONE    ( 0 )
  47. #define MIPS_INT1    ( 1 )
  48. #define MIPS_INT2    ( 2 )
  49. #define MIPS_INT3    ( 4 )
  50. #define MIPS_INT4    ( 8 )
  51. #define MIPS_INT5    ( 16 )
  52. #define MIPS_INT6    ( 32 )
  53. #define MIPS_INT7    ( 64 )
  54. #define MIPS_INT8    ( 128 )
  55.  
  56. #define MIPS_BYTE_EXTEND( a ) ( (INT32)(INT8)a )
  57. #define MIPS_WORD_EXTEND( a ) ( (INT32)(INT16)a )
  58.  
  59. #define INS_OP( op ) ( ( op >> 26 ) & 63 )
  60. #define INS_RS( op ) ( ( op >> 21 ) & 31 )
  61. #define INS_RT( op ) ( ( op >> 16 ) & 31 )
  62. #define INS_IMMEDIATE( op ) ( op & 0xffff )
  63. #define INS_TARGET( op ) ( op & 0x3ffffff )
  64. #define INS_RD( op ) ( ( op >> 11 ) & 31 )
  65. #define INS_SHAMT( op ) ( ( op >> 6 ) & 31 )
  66. #define INS_FUNCT( op ) ( op & 63 )
  67. #define INS_CODE( op ) ( ( op >> 6 ) & 0xfffff )
  68. #define INS_CO( op ) ( ( op >> 25 ) & 1 )
  69. #define INS_COFUN( op ) ( op & 0x1ffffff )
  70. #define INS_CF( op ) ( op & 63 )
  71.  
  72. #define GTE_OP( op ) ( op & 0x1f01bff ) 
  73. #define GTE_SF( op ) ( ( op >> 19 ) & 1 )
  74. #define GTE_MX( op ) ( ( op >> 17 ) & 3 )
  75. #define GTE_V( op ) ( ( op >> 15 ) & 3 )
  76. #define GTE_CV( op ) ( ( op >> 13 ) & 3 )
  77. #define GTE_LM( op ) ( ( op >> 10 ) & 1 )
  78.  
  79. #define OP_SPECIAL ( 0 )
  80. #define OP_REGIMM ( 1 )
  81. #define OP_J ( 2 )
  82. #define OP_JAL ( 3 )
  83. #define OP_BEQ ( 4 )
  84. #define OP_BNE ( 5 )
  85. #define OP_BLEZ ( 6 )
  86. #define OP_BGTZ ( 7 )
  87. #define OP_ADDI ( 8 )
  88. #define OP_ADDIU ( 9 )
  89. #define OP_SLTI ( 10 )
  90. #define OP_SLTIU ( 11 )
  91. #define OP_ANDI ( 12 )
  92. #define OP_ORI ( 13 )
  93. #define OP_XORI ( 14 )
  94. #define OP_LUI ( 15 )
  95. #define OP_COP0 ( 16 )
  96. #define OP_COP1 ( 17 )
  97. #define OP_COP2 ( 18 )
  98. #define OP_LB ( 32 )
  99. #define OP_LH ( 33 )
  100. #define OP_LWL ( 34 )
  101. #define OP_LW ( 35 )
  102. #define OP_LBU ( 36 )
  103. #define OP_LHU ( 37 )
  104. #define OP_LWR ( 38 )
  105. #define OP_SB ( 40 )
  106. #define OP_SH ( 41 )
  107. #define OP_SWL ( 42 )
  108. #define OP_SW ( 43 )
  109. #define OP_SWR ( 46 )
  110. #define OP_LWC1 ( 49 )
  111. #define OP_LWC2 ( 50 )
  112. #define OP_SWC1 ( 57 )
  113. #define OP_SWC2 ( 58 )
  114.  
  115. /* OP_SPECIAL */
  116. #define FUNCT_SLL ( 0 )
  117. #define FUNCT_SRL ( 2 )
  118. #define FUNCT_SRA ( 3 )
  119. #define FUNCT_SLLV ( 4 )
  120. #define FUNCT_SRLV ( 6 )
  121. #define FUNCT_SRAV ( 7 )
  122. #define FUNCT_JR ( 8 )
  123. #define FUNCT_JALR ( 9 )
  124. #define FUNCT_SYSCALL ( 12 )
  125. #define FUNCT_BREAK ( 13 )
  126. #define FUNCT_MFHI ( 16 )
  127. #define FUNCT_MTHI ( 17 )
  128. #define FUNCT_MFLO ( 18 )
  129. #define FUNCT_MTLO ( 19 )
  130. #define FUNCT_MULT ( 24 )
  131. #define FUNCT_MULTU ( 25 )
  132. #define FUNCT_DIV ( 26 )
  133. #define FUNCT_DIVU ( 27 )
  134. #define FUNCT_ADD ( 32 )
  135. #define FUNCT_ADDU ( 33 )
  136. #define FUNCT_SUB ( 34 )
  137. #define FUNCT_SUBU ( 35 )
  138. #define FUNCT_AND ( 36 )
  139. #define FUNCT_OR ( 37 )
  140. #define FUNCT_XOR ( 38 )
  141. #define FUNCT_NOR ( 39 )
  142. #define FUNCT_SLT ( 42 )
  143. #define FUNCT_SLTU ( 43 )
  144.  
  145. /* OP_REGIMM */
  146. #define RT_BLTZ ( 0 )
  147. #define RT_BGEZ ( 1 )
  148. #define RT_BLTZAL ( 16 )
  149. #define RT_BGEZAL ( 17 )
  150.  
  151. /* OP_COP0/OP_COP1/OP_COP2 */
  152. #define RS_MFC ( 0 )
  153. #define RS_CFC ( 2 )
  154. #define RS_MTC ( 4 )
  155. #define RS_CTC ( 6 )
  156. #define RS_BC ( 8 )
  157.  
  158. /* RS_BC */
  159. #define RT_BCF ( 0 )
  160. #define RT_BCT ( 1 )
  161.  
  162. /* OP_COP0 */
  163. #define CF_RFE ( 16 )
  164.  
  165. #ifdef LSB_FIRST
  166. #define READ_LONG(a)          (*(UINT32 *)(a))
  167. #else
  168. #define READ_LONG(a)          (READ_WORD(a+2)<<16)|READ_WORD(a)
  169. #endif
  170.  
  171. #define cpu_readop32(A)     READ_LONG(&OP_ROM[A])
  172. extern void mips_stop( void );
  173.  
  174. extern void mips_reset(void *param);
  175. extern void mips_exit(void);
  176. extern int mips_execute(int cycles);
  177. extern unsigned mips_get_context(void *dst);
  178. extern void mips_set_context(void *src);
  179. extern unsigned mips_get_pc(void);
  180. extern unsigned mips_get_op_counter( void );
  181. extern void mips_set_pc(unsigned val);
  182. extern unsigned mips_get_sp(void);
  183. extern void mips_set_sp(unsigned val);
  184. extern unsigned mips_get_reg(int regnum);
  185. extern void mips_set_reg(int regnum, unsigned val);
  186. extern void mips_set_nmi_line(int linestate);
  187. extern void mips_set_irq_line(int irqline, int linestate);
  188. extern void mips_set_irq_callback(int (*callback)(int irqline));
  189. extern const char *mips_info(void *context, int regnum);
  190. extern unsigned mips_dasm(char *buffer, unsigned pc);
  191.  
  192. #ifdef MAME_DEBUG
  193. extern unsigned DasmMIPS(char *buff, unsigned _pc);
  194. #endif
  195.  
  196. #endif
  197.